#pragma once
#include <vector>
#include <string>
using namespace std;
#include "SurfaceShader.h"
#include "Intersection.h"

class Scene;

class ShaderCollection
{
public:
	ShaderCollection();
	~ShaderCollection();

	//get the surface color for this point
	vec4 getColor(Intersection &_int);

	//returns the number of sub shaders
	int count(){ return subShades->size(); }
	
	//an iterator into the collection of surface shaders
	vector<SurfaceShader*>::iterator subShaders();

	void addShader(SurfaceShader*);

	Scene* scene(){ return theScene; }
	void scene(Scene* _s){ theScene = _s; }

private:
	//collection of sub-shaders
	vector<SurfaceShader*> *subShades;

	//pointer to the scene
	Scene *theScene;

	string name;

	//Store the result of the reflected ray
	//Pointer to the intersected shape? Just a ray?

	//Store the result of the shadow ray
	//whether or not each light is obscured at this point
};

